/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package database;

import java.sql.ResultSet;
import java.util.ArrayList;
import model.Livro;
import model.backstage.Autores;

/**
 *
 * @author Guilherme
 */
public class DataLivro
{
    public static void main(String[] args)
    {
        String s = "1423523";
    }
    
    public static void main2(String[] args)
    {
        
        String[] v = new String[]
        {
            "Sandra de Amo", "Marcos Bueno", "Guilherme Alves"
        };
        ArrayList<String> a = new ArrayList<String>();
        
        for (int i = 0; i < v.length; i++)
        {
            a.add(v[i]);
        }
        String[] x = new String[]
        {
            "Nádia Félix"
        };
        ArrayList<String> b = new ArrayList<String>();
        for (int j = 0; j < x.length; j++)
        {
            b.add(x[j]);
        }
        Autores aut = new Autores(a, b);
        
        Livro l = new Livro("1423523", "476585", 2013, "São Paulo", "Mining User Contextual Preferences", "Preference Mining",
                "Implementação de um minerador", 0, aut, "SBC", "nulo", "nulo", "nulo");
        
        delete(l);
        add(l);
        
        ArrayList<String> novosAtributos = new ArrayList<String>();
        String[] n = new String[]
        {
            "editora", "ano"
        };
        for (int i = 0; i < n.length; i++)
        {
            novosAtributos.add(n[i]);
        }
        ArrayList<String> condAtributos = new ArrayList<String>();
        String[] c = new String[]
        {
            "itemid"
        };
        for (int j = 0; j < c.length; j++)
        {
            condAtributos.add(c[j]);
        }
    }
    
    public static boolean add(Livro l)
    {
        String item = "('" + l.getID() + "', '" + l.getNro() + "', '" + l.getTitulo() + "', " + l.getAno() + ", '" + l.getAssunto() + "', '"
                + l.getCidade() + "', " + l.getStatus() + ", '" + l.getDescricao() + "');";
        String str = "('" + l.getID() + "', '" + l.getEditora() + "', '" + l.getTraducao()
                + "', '" + l.getRevisao() + "', '" + l.getNotas() + "');";
        String autP = "";
        String autS = "";
        
        for (int i = 0; i < l.getAutores().getPrincipais().size(); i++)
        {
            if (i > 0)
            {
                autP = autP + " , ";
            }
            autP = autP + "('" + l.getID() + "', '" + l.getAutores().getPrincipais().get(i) + "')";
        }
        autP = autP + ";";
        
        if (l.getAutores().getSecundarios() != null)
        {
            for (int j = 0; j < l.getAutores().getSecundarios().size(); j++)
            {
                if (j > 0)
                {
                    autS = autS + " ,";
                }
                autS = autS + "('" + l.getID() + "', '" + l.getAutores().getSecundarios().get(j) + "')";
            }
            autS = autS + ";";
        }
        
        ArrayList<String> tabelas = new ArrayList<String>();
        tabelas.add("item");
        tabelas.add("livro");
        tabelas.add("autorprincipal");
        if (l.getAutores().getSecundarios() != null)
            tabelas.add("autorsecundario");
        ArrayList<String> ls = new ArrayList<String>();
        ls.add(item);
        ls.add(str);
        ls.add(autP);
        if (l.getAutores().getSecundarios() != null)
            ls.add(autS);
        return Link.addX(tabelas, ls);
    }
    
    public static boolean delete(Livro l)
    {
        String str = "itemID = '" + l.getID() + "'";
        return Link.delete("item", str);
    }
    
    public static boolean delete(String l)
    {
        String str = "itemID = '" + l + "'";
        return Link.delete("item", str);
    }
    
    public static boolean update(ArrayList<String> nomeAtributos, ArrayList<String> valores,
            ArrayList<String> condAtributos, ArrayList<String> condValores)
    {
        if (nomeAtributos.size() != valores.size())
        {
            return false;
        }
        String atual = "";
        String cond = "";
        for (int i = 0; i < nomeAtributos.size(); i++)
        {
            if (i > 0)
            {
                atual = atual + " AND ";
            }
            atual = atual + nomeAtributos.get(i) + " = " + valores.get(i);
        }
        for (int j = 0; j < condAtributos.size(); j++)
        {
            if (j > 0)
            {
                cond = cond + " AND ";
            }
            cond = cond + condAtributos.get(j) + " = " + condValores.get(j);
        }
        return Link.update("livro", atual, cond);
    }
    public static ResultSet select ()
    {
        return Link.select("livrosdisponiveis", "*", "true");
    }
}
